فارسی

یاد بگیرید که چگونه لنگر اسکرول CSS از پرش محتوا جلوگیری می‌کند و تجربه‌ی کاربری در وب‌سایت‌های پویا را بهبود می‌بخشد. بهترین شیوه‌ها و مثال‌های عملی برای ناوبری یکپارچه را کاوش کنید.

لنگر اسکرول CSS: جلوگیری از پرش محتوا برای تجربه‌ی کاربری روان‌تر

آیا تا به حال هنگام خواندن یک مقاله آنلاین بوده‌اید که ناگهان صفحه بپرد، جای خود را از دست بدهید و مجبور شوید دوباره به پایین اسکرول کنید؟ این تجربه‌ی ناخوشایند که به عنوان «پرش محتوا» شناخته می‌شود، اغلب زمانی رخ می‌دهد که محتوای پویا در بالای نمای فعلی بارگذاری می‌شود و محتوای موجود را به سمت پایین هل می‌دهد. لنگر اسکرول CSS ابزاری قدرتمند برای مقابله با این مشکل است که با حفظ موقعیت اسکرول کاربر حتی با تغییر محتوا، تجربه‌ی کاربری را به طور قابل توجهی بهبود می‌بخشد.

درک پرش‌های محتوا و تأثیر آن‌ها

پرش‌های محتوا معمولاً به دلیل بارگذاری ناهمزمان منابعی مانند تصاویر، تبلیغات یا محتوای تولید شده به صورت پویا ایجاد می‌شوند. در حالی که این عناصر عملکرد و جذابیت بصری یک وب‌سایت را افزایش می‌دهند، بارگذاری تأخیری آن‌ها می‌تواند جریان مطالعه کاربر را مختل کند. تغییر ناگهانی در چیدمان نه تنها آزاردهنده است، بلکه می‌تواند تعامل کاربر را کاهش داده و به طور بالقوه کاربران را از وب‌سایت شما دور کند.

تصور کنید در حال خواندن یک مقاله خبری با تبلیغات جاسازی شده هستید. همانطور که به پایین اسکرول می‌کنید، یک تبلیغ در بالای موقعیت فعلی شما بارگذاری می‌شود و متنی را که می‌خواندید به پایین‌تر صفحه هل می‌دهد. شما باید متوقف شوید، دوباره موقعیت خود را پیدا کنید و جای خود را بیابید. این وقفه از تجربه‌ی خواندن می‌کاهد و می‌تواند فوق‌العاده ناامیدکننده باشد، به خصوص در دستگاه‌های تلفن همراه با صفحه‌های کوچک‌تر.

چرا این یک مشکل است؟

معرفی لنگر اسکرول CSS

لنگر اسکرول CSS یک ویژگی مرورگر است که برای تنظیم خودکار موقعیت اسکرول هنگام تغییر پویای محتوا طراحی شده است. این ویژگی اساساً موقعیت اسکرول فعلی کاربر را به یک عنصر خاص در صفحه «لنگر» می‌کند و تضمین می‌کند که نمای کاربر بر روی آن عنصر متمرکز باقی بماند، حتی اگر محتوایی در بالای آن درج یا حذف شود. این امر از پرش‌ها و جابجایی‌های آزاردهنده‌ای که می‌تواند وب‌سایت‌های پویا را تحت تأثیر قرار دهد، جلوگیری می‌کند.

مکانیسم اصلی پشت لنگر اسکرول به طرز شگفت‌آوری ساده است. هنگامی که فعال باشد، مرورگر سند را برای تغییرات چیدمان نظارت می‌کند. اگر تغییری را تشخیص دهد که به طور معمول موقعیت اسکرول را جابجا می‌کند، به طور خودکار آفست اسکرول را برای جبران تنظیم می‌کند و نمای کاربر را بر روی همان محتوا متمرکز نگه می‌دارد.

چگونه لنگر اسکرول CSS را پیاده‌سازی کنیم

ویژگی اصلی CSS که لنگر اسکرول را کنترل می‌کند overflow-anchor است. این ویژگی می‌تواند بر روی هر عنصر قابل اسکرول، از جمله خود عنصر <body>، اعمال شود. در اینجا نحوه‌ی استفاده از آن آمده است:

فعال کردن لنگر اسکرول برای کل صفحه

برای فعال کردن لنگر اسکرول برای کل صفحه وب، می‌توانید ویژگی overflow-anchor را به عنصر <body> اعمال کنید:


body {
  overflow-anchor: auto;
}

این ساده‌ترین و اغلب مؤثرترین راه برای پیاده‌سازی لنگر اسکرول است. مقدار auto به مرورگر می‌گوید که لنگر اسکرول را برای کل سند به طور خودکار مدیریت کند.

غیرفعال کردن لنگر اسکرول برای عناصر خاص

در برخی موارد، ممکن است بخواهید لنگر اسکرول را برای عناصر خاصی در صفحه خود غیرفعال کنید. به عنوان مثال، ممکن است کامپوننتی داشته باشید که به یک رفتار اسکرول خاص متکی است که با لنگر اسکرول سازگار نیست. برای غیرفعال کردن لنگر اسکرول برای یک عنصر خاص، ویژگی overflow-anchor را روی none تنظیم کنید:


.no-scroll-anchor {
  overflow-anchor: none;
}

سپس، کلاس .no-scroll-anchor را به عنصری که می‌خواهید از لنگر اسکرول مستثنی کنید، اعمال کنید.

مثال‌های عملی و موارد استفاده

بیایید چند مثال عملی از نحوه‌ی استفاده از لنگر اسکرول برای بهبود تجربه‌ی کاربری در انواع مختلف وب‌سایت‌ها را بررسی کنیم:

۱. وبلاگ‌ها و مقالات خبری

همانطور که قبلاً ذکر شد، وبلاگ‌ها و مقالات خبری کاندیداهای اصلی برای لنگر اسکرول هستند. با فعال کردن لنگر اسکرول، می‌توانید از پرش‌های آزاردهنده‌ی محتوا که هنگام بارگذاری ناهمزمان تصاویر یا تبلیغات رخ می‌دهد، جلوگیری کنید. این امر تجربه‌ی خواندنی روان‌تر و لذت‌بخش‌تر را برای کاربران شما تضمین می‌کند.

مثال: یک پست وبلاگ با تصاویر جاسازی شده را در نظر بگیرید. بدون لنگر اسکرول، با بارگذاری تصاویر، متن می‌پرد و جریان خواندن خواننده را مختل می‌کند. با فعال بودن لنگر اسکرول، مرورگر به طور خودکار موقعیت اسکرول را تنظیم می‌کند، متن را پایدار نگه می‌دارد و از پرش جلوگیری می‌کند.

۲. فیدهای رسانه‌های اجتماعی

فیدهای رسانه‌های اجتماعی اغلب با اسکرول کاربر به پایین، محتوای جدید را به صورت پویا بارگذاری می‌کنند. بدون لنگر اسکرول، این می‌تواند منجر به پرش محتوا و تجربه‌ی کاربری ناخوشایند شود. با فعال کردن لنگر اسکرول، می‌توانید اطمینان حاصل کنید که موقعیت اسکرول کاربر با بارگذاری پست‌های جدید حفظ می‌شود و یک تجربه‌ی مرور یکپارچه و بدون وقفه ایجاد می‌کند.

مثال: تصور کنید در حال پیمایش فید رسانه‌ی اجتماعی خود هستید. وقتی به پایین صفحه می‌رسید، پست‌های جدید به طور خودکار بارگذاری می‌شوند. بدون لنگر اسکرول، این پست‌های جدید می‌توانند محتوایی را که تازه مشاهده می‌کردید به پایین‌تر صفحه هل دهند. با لنگر اسکرول، مرورگر موقعیت اسکرول را طوری تنظیم می‌کند که محتوای مورد نظر شما در نمای کاربر باقی بماند.

۳. لیست محصولات تجارت الکترونیک

وب‌سایت‌های تجارت الکترونیک اغلب از فیلتر و مرتب‌سازی پویا برای نمایش لیست محصولات استفاده می‌کنند. هنگامی که فیلترها اعمال می‌شوند یا ترتیب مرتب‌سازی تغییر می‌کند، محتوای صفحه به صورت پویا به‌روز می‌شود. بدون لنگر اسکرول، این می‌تواند منجر به پرش محتوا و تجربه‌ی کاربری گیج‌کننده شود. با فعال کردن لنگر اسکرول، می‌توانید اطمینان حاصل کنید که موقعیت اسکرول کاربر با به‌روز شدن لیست محصولات حفظ می‌شود و مرور و یافتن محصولات مورد نظرشان را برای آنها آسان‌تر می‌کند.

مثال: فرض کنید در حال مرور یک فروشگاه آنلاین هستید و فیلترهایی را برای محدود کردن جستجوی خود برای یک محصول خاص اعمال می‌کنید. هر بار که یک فیلتر را اعمال می‌کنید، لیست محصولات به‌روز می‌شود. بدون لنگر اسکرول، صفحه ممکن است به بالا بپرد و شما را مجبور به اسکرول دوباره به پایین کند. با لنگر اسکرول، صفحه تقریباً در همان موقعیت باقی می‌ماند و به شما امکان می‌دهد بدون وقفه به مرور ادامه دهید.

۴. برنامه‌های تک صفحه‌ای (SPA)

برنامه‌های تک صفحه‌ای (SPA) به شدت به بارگذاری پویای محتوا متکی هستند. همانطور که کاربران در برنامه حرکت می‌کنند، محتوای جدید به صورت ناهمزمان بارگذاری می‌شود و اغلب جایگزین محتوای موجود می‌شود. بدون لنگر اسکرول، این می‌تواند منجر به پرش‌های مکرر محتوا و تجربه‌ی کاربری آزاردهنده شود. با فعال کردن لنگر اسکرول، می‌توانید اطمینان حاصل کنید که موقعیت اسکرول کاربر با تغییر محتوا حفظ می‌شود و یک برنامه‌ی روان‌تر و واکنش‌گراتر ایجاد می‌کند.

مثال: یک SPA با چندین بخش را در نظر بگیرید که با کلیک کاربر روی لینک‌های ناوبری به صورت پویا بارگذاری می‌شوند. بدون لنگر اسکرول، هر بار که بخش جدیدی بارگذاری می‌شود، صفحه ممکن است به بالا بپرد. با لنگر اسکرول، صفحه موقعیت اسکرول کاربر را در بخش فعلی حفظ می‌کند و یک انتقال یکپارچه‌تر بین بخش‌ها ایجاد می‌کند.

بهترین شیوه‌ها برای استفاده از لنگر اسکرول CSS

در حالی که لنگر اسکرول CSS ابزاری قدرتمند است، مهم است که از آن به طور مؤثر برای جلوگیری از عواقب ناخواسته استفاده کنید. در اینجا چند شیوه‌ی برتر برای به خاطر سپردن آورده شده است:

سازگاری با مرورگرها

لنگر اسکرول CSS به طور گسترده توسط مرورگرهای مدرن پشتیبانی می‌شود. با این حال، همیشه ایده‌ی خوبی است که جدول سازگاری را در وب‌سایت Can I use بررسی کنید تا اطمینان حاصل شود که توسط مرورگرهایی که کاربران شما احتمالاً استفاده می‌کنند، پشتیبانی می‌شود.

از اکتبر ۲۰۲۴، لنگر اسکرول توسط مرورگرهای زیر پشتیبانی می‌شود:

برای مرورگرهای قدیمی‌تر که از لنگر اسکرول پشتیبانی نمی‌کنند، این رفتار به سادگی وجود نخواهد داشت – پرش‌های محتوا همچنان رخ خواهند داد. در این موارد، ممکن است استفاده از پولی‌فیل‌های مبتنی بر جاوا اسکریپت را برای ارائه عملکرد مشابه در نظر بگیرید. با این حال، آگاه باشید که این پولی‌فیل‌ها می‌توانند پیچیده‌تر و به طور بالقوه کم‌بازده‌تر از پیاده‌سازی بومی مرورگر باشند.

جایگزین‌ها و راه‌حل‌های پشتیبان

در حالی که لنگر اسکرول CSS راه‌حل ترجیحی برای جلوگیری از پرش محتوا است، رویکردهای جایگزینی وجود دارد که می‌توانید از آنها استفاده کنید، به ویژه برای مرورگرهای قدیمی‌تر یا در شرایطی که لنگر اسکرول کافی نیست.

راه‌حل‌های مبتنی بر جاوا اسکریپت

می‌توانید از جاوا اسکریپت برای تنظیم دستی موقعیت اسکرول هنگام تغییر محتوا استفاده کنید. این رویکرد به کد بیشتری نیاز دارد و می‌تواند پیچیده‌تر از استفاده از لنگر اسکرول CSS باشد، اما کنترل بیشتری بر رفتار اسکرول ارائه می‌دهد. در اینجا یک مثال ساده آورده شده است:


// Get the current scroll position
const scrollPosition = window.pageYOffset;

// Load the new content
// ...

// Restore the scroll position
window.scrollTo(0, scrollPosition);

این قطعه کد موقعیت اسکرول فعلی را قبل از بارگذاری محتوای جدید ثبت می‌کند و سپس پس از بارگذاری محتوا آن را بازیابی می‌کند. این کار از پرش صفحه به بالا جلوگیری می‌کند.

عناصر جایگزین (Placeholder)

رویکرد دیگر استفاده از عناصر جایگزین (placeholder) برای رزرو فضا برای محتوایی است که به صورت پویا بارگذاری خواهد شد. این کار از جابجایی محتوای موجود هنگام درج محتوای جدید جلوگیری می‌کند. به عنوان مثال، می‌توانید از یک عنصر <div> با ارتفاع و عرض ثابت برای رزرو فضا برای تصویری که بعداً بارگذاری می‌شود، استفاده کنید.


<div style="width: 300px; height: 200px;">
  <img src="placeholder.gif" data-src="actual-image.jpg" alt="Image">
</div>

در این مثال، عنصر <div> فضا را برای تصویر رزرو می‌کند و از جابجایی محتوای زیر آن هنگام بارگذاری تصویر جلوگیری می‌کند. می‌توانید از جاوا اسکریپت برای جایگزینی تصویر جایگزین با تصویر واقعی پس از بارگذاری آن استفاده کنید.

آینده‌ی لنگر اسکرول و پایداری چیدمان

لنگر اسکرول CSS بخشی از تلاش گسترده‌تری برای بهبود پایداری چیدمان در وب است. معیار Cumulative Layout Shift (CLS)، که یکی از مؤلفه‌های کلیدی Core Web Vitals گوگل است، میزان جابجایی‌های غیرمنتظره‌ی چیدمان را که در یک صفحه رخ می‌دهد، اندازه‌گیری می‌کند. امتیاز پایین CLS برای ارائه‌ی یک تجربه‌ی کاربری خوب و بهبود رتبه‌بندی موتورهای جستجو ضروری است.

با استفاده از لنگر اسکرول CSS و تکنیک‌های دیگر برای جلوگیری از پرش محتوا، می‌توانید امتیاز CLS وب‌سایت خود را به طور قابل توجهی کاهش دهید و تجربه‌ی کاربری کلی آن را بهبود بخشید. با ادامه تکامل مرورگرها و پیاده‌سازی ویژگی‌های جدید برای پایداری چیدمان، مهم است که از آخرین بهترین شیوه‌ها و تکنیک‌ها به‌روز بمانید.

نتیجه‌گیری

لنگر اسکرول CSS ابزاری ارزشمند برای جلوگیری از پرش محتوا و ایجاد تجربه‌ی کاربری روان‌تر در وب‌سایت‌های پویا است. با فعال کردن لنگر اسکرول، می‌توانید اطمینان حاصل کنید که کاربران شما می‌توانند بدون وقفه ناشی از جابجایی‌های آزاردهنده‌ی چیدمان، وب‌سایت شما را مرور کرده و با آن تعامل داشته باشند. این نه تنها رضایت کاربر را بهبود می‌بخشد، بلکه می‌تواند منجر به افزایش تعامل و به طور بالقوه رتبه‌بندی بهتر در موتورهای جستجو شود.

چه در حال ساخت یک وبلاگ، یک پلتفرم رسانه‌ی اجتماعی، یک وب‌سایت تجارت الکترونیک یا یک برنامه‌ی تک صفحه‌ای باشید، پیاده‌سازی لنگر اسکرول CSS را برای بهبود تجربه‌ی کاربری و ایجاد یک وب‌سایت صیقلی‌تر و حرفه‌ای‌تر در نظر بگیرید. به یاد داشته باشید که پیاده‌سازی خود را به طور کامل تست کنید و آن را با تکنیک‌های دیگر ترکیب کنید تا به بهترین نتایج ممکن دست یابید. قدرت لنگر اسکرول CSS را در آغوش بگیرید و با پرش‌های ناخوشایند محتوا خداحافظی کنید!